package cn;

import java.sql.*;
import java.util.Date;

/**
 * 执行jdbc操作工具类
 *
 */
public class BaseDaoJdbc {

    /**
     * 使用静态代码块，完成数据库驱动的加载
     */
    static {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("找不到驱动，加载失败，请添加依赖");
        }
    }


    /**
     * 使用jdbc对数据库做更新操作   增删改
     * 加载驱动--获取连接--获取执行器--执行sql--关闭连接
     * @param sql  含有? 占位符
     * @param objects  参数：与？一一对应
     * @return
     */
    public int update(String sql,Object... objects){
        int res = 0;
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
            //获取数据库连接对象  1s   连接池   三次握手  四次分手
             connection = DriverManager.getConnection("jdbc:mysql://localhost:3308/partyinfor?",
                    "root", "123456");
            //对sql进行预编译
             preparedStatement = connection.prepareStatement(sql);
            //把objects 参数添加preparedStatement中
            for (int i = 0; i < objects.length ; i++) {
                preparedStatement.setObject(i+1,objects[i]);
            }
            //执行sql  更新
            res = preparedStatement.executeUpdate();

        } catch (SQLException e) {
        //    e.printStackTrace();
        }finally {

            try{
                if(preparedStatement!=null ){
                    preparedStatement.close();
                }
                if(connection!=null){
                    connection.close();
                }
            }catch (SQLException e){
                e.printStackTrace();
            }

        }

        return res;
    }


    /**
     * 使用jdbc查询
     * @param sql
     * @param objects
     * @return  返回该数据id
     */
    public int queryToID(String sql,Object objects){
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        int id = 0;
        try{
             //获取数据库连接对象  1s   连接池   三次握手  四次分手
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3308/partyinfor?",
                    "root", "123456");
            //对sql进行预编译
            preparedStatement = connection.prepareStatement(sql);
            //把objects 参数添加preparedStatement中
            //for (int i = 0; i < objects.length ; i++) {
                preparedStatement.setObject(1,objects);
          //  }
            //执行  查询
            ResultSet resultSet = preparedStatement.executeQuery();
            //解析
            while (resultSet.next()){
                id = resultSet.getInt("id");
//                id = 1;
            }

            //关闭  释放资源
            resultSet.close();
            preparedStatement.close();
            connection.close();

        }catch (Exception e){
//            e.printStackTrace();
        }
        return id;

    }





    /**
     * 测试一下
     * @param args
     */
    public static void main(String[] args) {
//        String sql = "INSERT INTO information(title,author,content,type,time,source,readtotal) VALUES(?,?,?,?,?,?,?)";
//        new BaseDaoJdbc().update(sql,"标题","作者","内容",1,new Date(),"四川花园",1);

        String sqlgetID = "SELECT * FROM topic WHERE typename = ? ";
        int dang = new BaseDaoJdbc().queryToID(sqlgetID, "中共党史");
        System.out.println(dang);
    }




}



